# coding:utf8
from log import logger

"""
# 类的反射
lit = dir(A)
    # list
    # A 的本身的类属性名称
    # 还包含 所有方法的名称, 三类方法
    
    
dit = A.__dict__
    # type is   <class  mappingproxy>
    # have A's attr_str and value
    # 包含所有方法的键值对, 三类方法
    
    
我们说属性,应该就是一个字符串吧

当所有东西都在一个列表里面,你只能通过循环遍历才能把它们找出来

# 对象的反射

obj.__dict__
    一个字典
    只有对象的实例属性, 不包含方法
dir(obj)
    一个列表
    里面有所有实例属性的名称, 所有方法的名称, 包括实例方法, 类方法, 静态方法
    还有一些双下划线的名称
    
    

# 装饰器
@property
def funcname(self): pass

@funcname.setter
def funcname(self, v): pass

"""

class A:
    a = 1
    logger.debug('in A')
    class B:
        b = 2
        logger.debug('in B')
    class C:
        c = 3
        logger.debug('in C')
        
    def __init__(self):
        self.aa = 11
        self.bb = 22
        self.cc = ('a', 'b', 'c')
        self.ee = {'m':1, 'n':2 }
        
    def func(self):
        pass
    
    @classmethod
    def classfunc(cls):
        pass
    
    @staticmethod
    def staticfunc():
        pass
    



# 在本文件初始化就会打印 A, B, C

